
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.geom.AffineTransform;
import java.awt.geom.Line2D;
import java.io.Serializable;

public class LigacaoIdentificadorDestinoTexto extends Ligacao implements Serializable {


	/**
	 * 
	 */
	private static final long serialVersionUID = -517396763872412985L;
	/**
	 * 
	 */

	private String texto ;
	private Coordenada coordenada;
	private Point pontoConetorOrigem;
	private Point pontoConetorDestino;
	
	
	public Coordenada getCoordenada() {
		return coordenada;
	}

	public void setCoordenada(Coordenada coordenada) {
		this.coordenada = coordenada;
	}

	public LigacaoIdentificadorDestinoTexto(Identificador identificador,
			Identificador identificadorDestino) {
		super(identificador, identificadorDestino);
		
	}

	public String getTexto() {
		return texto;
	}

	public void setTexto(String texto) {
		this.texto = texto;
	}

	@Override
	public void desenhar(Graphics graphics) {
		// TODO Auto-generated method stub
		graphics.setColor(Color.black);
		this.texto = "TESTE";
//		Coordenada centroIdentificador = identificador.getRetanguloEnvolvente()
//				.getCentro();
//
//		Coordenada centroIdentificadorDestino = identificadorDestino
//				.getRetanguloEnvolvente().getCentro();

//		//Point pontoConetorOrigem = identificador.getConetor().contem(identificador, coordenada);
//		Point pontoConetorDestino = identificadorDestino.getConetor().contem(identificadorDestino, coordenada);

		Graphics2D g2 = (Graphics2D) graphics.create();
		Line2D.Double line;
		Polygon arrowHead = new Polygon();
		arrowHead.addPoint(0, 5);
		arrowHead.addPoint(-5, -5);
		arrowHead.addPoint(5, -5);

		System.out.println("VALOR ORIGEM"+ pontoConetorOrigem);
		System.out.println("VALOR DESTINO"+ pontoConetorDestino);
		if (identificadorDestino != null && pontoConetorDestino!=null) {
			
		
			
			line = new Line2D.Double(pontoConetorOrigem.x,
					pontoConetorOrigem.y,
					pontoConetorDestino.x,
					pontoConetorDestino.y);
			g2.draw(line);

		} else {
			line = new Line2D.Double(pontoConetorOrigem.x,
					pontoConetorOrigem.y,pontoConetorDestino.x, pontoConetorDestino.y);
			g2.draw(line);
		}
		g2.drawString(this.texto,(int)(line.x1+line.x2)/2, (int)(line.y1+line.y2)/2);
		AffineTransform tx = new AffineTransform();
		tx.setToIdentity();
		double angle = Math.atan2(line.y2 - line.y1, line.x2 - line.x1);
		tx.translate(line.x2, line.y2);
		tx.rotate((angle - Math.PI / 2d));

		Graphics2D g = (Graphics2D) g2.create();
		g.setTransform(tx);
		g.fill(arrowHead);
		g.dispose();
	}

	public Point getPontoConetorOrigem() {
		return pontoConetorOrigem;
	}

	public void setPontoConetorOrigem(Point pontoConetorOrigem) {
		System.out.println("ESTOU A DEFENIR O PONTO CONETOR ORIGEM DENTRO DO LIGACAO IDENTIFICADOR");
		this.pontoConetorOrigem = pontoConetorOrigem;
	}

	public void setPontoConetorDestino(Point conetorDestino) {
		// TODO Auto-generated method stub
		System.out.println("ESTOU A DEFENIR O PONTO CONETOR DESTINO DENTRO DO LIGACAO IDENTIFICADOR");
		this.pontoConetorDestino = conetorDestino;
	}
}
